#ifndef DISC_QUOTE_H
#define DISC_QUOTE_H

#include "ex15_11.h"
using namespace std;

class Disc_quote : public Quote {
public:
  Disc_quote(); //默认构造函数
  Disc_quote(const string &book, double price, size_t qty, double disc)
      : Quote(book, price), quantity(qty), _discount(disc) {} //构造函数
  double net_price(size_t) const = 0; //纯虚函数，本身无定义
protected:          //声明为保护，让派生类得以访问
  size_t quantity;  //临界数量
  double _discount; //折扣
};

class Bulk_quote : public Disc_quote {
public:
  Bulk_quote(); //默认构造函数
  Bulk_quote(const string &book, double price, size_t qty, double disc)
      : Disc_quote(book, price, qty, disc) {} //构造函数,直接调用基类的构造函数
  double net_price(size_t n) const {
    if (n > quantity) {
      return n * (1 - _discount) * price;
    } else {
      return n * price;
    }
  }
};
#endif // DISC_QUOTE_H